package com.demo.java.OD451_500.OD465;

import java.util.*;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【攀登者2(C&D卷)】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/146351706
 */
public class OdMain {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String inputStr = scanner.nextLine();
        scanner.close();

        // 解析输入的山脉高度数据与能量限制
        String[] splitString = inputStr.replace("[", "").replace("]", "").split(",");
        int[] hill_map = new int[splitString.length - 1]; // 用来存储山脉的高度数据

        for (int i = 0; i < hill_map.length; i++) {
            hill_map[i] = Integer.parseInt(splitString[i]); // 赋值给山脉高度数组
        }

        // 获取能量值
        int energy = Integer.valueOf(splitString[splitString.length - 1]);

        // 如果山脉数组的长度小于等于1，直接输出0，表示无法攀登
        if (hill_map.length <= 1) {
            System.out.println(0);
            return;
        }

        // 标志是否能攀登
        boolean canClimb = false;

        // 记录峰值的数量
        int peakCount = 0;

        // 记录峰值索引的列表
        List<Integer> peakIndexList = new ArrayList<>();

        // 从左到右遍历，寻找左边的峰值
        int left = 0;
        for (int i = 1; i < hill_map.length; i++) {
            if (hill_map[i] == 0) {
                if (left != 0) {
                    canClimb = true;
                }
                left = 0;
            } else {
                boolean flag = false;
                left += Math.abs(hill_map[i] - hill_map[i - 1]); // 计算能量消耗
                if (i == hill_map.length - 1 && i > 0 && hill_map[i] > hill_map[i - 1]) {
                    flag = true; // 右边没有元素，最后一个元素为峰值
                } else if (i > 0 && i < hill_map.length - 1 && hill_map[i - 1] < hill_map[i] && hill_map[i] > hill_map[i + 1]) {
                    flag = true; // 不是最后一个元素且大于相邻元素
                }
                if (flag && left * 3 <= energy) { // 判断能量消耗是否符合限制
                    peakIndexList.add(i);
                    peakCount++; // 增加峰值数量
                }
            }
        }

        // 从右到左遍历，寻找右边的峰值
        int right = 0;
        for (int i = hill_map.length - 2; i > -1; i--) {
            if (hill_map[i] == 0) {
                if (right != 0) {
                    canClimb = true;
                }
                right = 0;
            } else {
                boolean flag = false;
                right += Math.abs(hill_map[i] - hill_map[i + 1]); // 计算能量消耗
                if (i == 0 && i + 1 < hill_map.length && hill_map[i + 1] < hill_map[i]) {
                    flag = true; // 左边没有元素，第一个元素为峰值
                } else if (i > 0 && i < hill_map.length - 1 && hill_map[i - 1] < hill_map[i] && hill_map[i] > hill_map[i + 1]) {
                    flag = true; // 不是第一个元素且大于相邻元素
                }
                if (flag && right * 3 <= energy && !peakIndexList.contains(i)) { // 判断能量消耗
                    peakIndexList.add(i);
                    peakCount++; // 增加峰值数量
                }
            }
        }

        // 如果可以攀登，输出峰值的数量，否则输出0
        if (canClimb) {
            System.out.println(peakCount);
        } else {
            System.out.println(0);
        }
    }
}